home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / gcc263-src.lha / gcc-2.6.3 / config / arm / riscix.h < prev    next >
C/C++ Source or Header  |  1994-06-27  |  5KB  |  133 lines

  1. /* Definitions of target machine for GNU compiler.  ARM RISCiX version.
  2.    Copyright (C) 1993, 1994 Free Software Foundation, Inc.
  3.    Contributed by Richard Earnshaw (rwe11@cl.cam.ac.uk), based on original
  4.           work by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
  5.              and Martin Simmons (@harleqn.co.uk).
  6.  
  7. This file is part of GNU CC.
  8.  
  9. GNU CC is free software; you can redistribute it and/or modify
  10. it under the terms of the GNU General Public License as published by
  11. the Free Software Foundation; either version 2, or (at your option)
  12. any later version.
  13.  
  14. GNU CC is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with GNU CC; see the file COPYING.  If not, write to
  21. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  22.  
  23. /* Translation to find startup files.  On RISC iX boxes,
  24.    crt0, mcrt0 and gcrt0.o are in /usr/lib.  */
  25. #define STARTFILE_SPEC  "\
  26.   %{pg:/usr/lib/gcrt0.o%s}\
  27.   %{!pg:%{p:/usr/lib/mcrt0.o%s}\
  28.         %{!p:/usr/lib/crt0.o%s}}"
  29.  
  30. /* RISC iX has no concept of -lg */
  31. /* If -static is specified then link with -lc_n */
  32.  
  33. #ifndef LIB_SPEC
  34. #define LIB_SPEC "\
  35.   %{g*:-lg}\
  36.   %{!p:%{!pg:%{!static:-lc}%{static:-lc_n}}}\
  37.   %{p:-lc_p}\
  38.   %{pg:-lc_p}"
  39. #endif
  40.   
  41. /* The RISC iX assembler never deletes any symbols from the object module;
  42.    and, by default, ld doesn't either.  -X causes local symbols starting
  43.    with 'L' to be deleted, which is what we want.  */
  44. #ifndef LINK_SPEC
  45. #define LINK_SPEC "-X"
  46. #endif
  47.  
  48. #ifndef CPP_PREDEFINES
  49. #define CPP_PREDEFINES  \
  50.     "-Darm -Driscix -Dunix -Asystem(unix) -Acpu(arm) -Amachine(arm)"
  51. #endif
  52.  
  53. #ifndef CPP_SPEC
  54. #define CPP_SPEC "%{m6:-D__arm6__} \
  55.     %{mbsd:%{pedantic:%e-mbsd and -pedantic incompatible} -D_BSD_C} \
  56.     %{mxopen:%{mbsd:%e-mbsd and -mxopen incompatible}         \
  57.       %{pedantic:%e-mxopen and -pedantic incompatible} -D_XOPEN_C}  \
  58.     %{!mbsd:%{!mxopen:%{!ansi: -D_BSD_C}}}"
  59. #endif
  60.  
  61. /* RISCiX has some wierd symbol name munging, that is done to the object module
  62.    after assembly, which enables multiple libraries to be supported within
  63.    one (possibly shared) library.  It basically changes the symbol name of
  64.    certain symbols (for example _bcopy is converted to _$bcopy if using BSD)
  65.    Symrename's parameters are determined as follows:
  66.      -mno-symrename    Don't run symrename
  67.      -mbsd    symrename -BSD <file>
  68.      -mxopen    symrename -XOPEN <file>
  69.      -ansi    symrename - <file>
  70.      <none>    symrename -BSD <file>
  71.  */
  72.  
  73. #ifndef ASM_FINAL_SPEC
  74. #if !defined (CROSS_COMPILE)
  75. #define ASM_FINAL_SPEC "\
  76. %{!mno-symrename: \
  77.     \n /usr/bin/symrename \
  78.     -%{mbsd:%{pedantic:%e-mbsd and -pedantic incompatible}BSD}\
  79. %{mxopen:%{mbsd:%e-mbsd and -mxopen incompatible}\
  80. %{pedantic:%e-mxopen and -pedantic incompatible}XOPEN}\
  81. %{!mbsd:%{!mxopen:%{!ansi:BSD}}} %{c:%{o*:%*}%{!o*:%b.o}}%{!c:%U.o}}"
  82. #endif
  83. #endif
  84.  
  85. /* None of these is actually used in cc1, so they modify bit 31 */
  86. #define ARM_EXTRA_TARGET_SWITCHES \
  87. {"bsd", 0x80000000}, {"xopen", 0x80000000}, {"no-symrename", 0x80000000},
  88.  
  89.     
  90.  
  91. /* Run-time Target Specification.  */
  92. #define TARGET_VERSION  \
  93.   fputs (" (ARM/RISCiX)", stderr);
  94.  
  95. /* This is used in ASM_FILE_START */
  96. #define ARM_OS_NAME "RISCiX"
  97.  
  98. /* Unsigned chars produces much better code than signed.  */
  99. #define DEFAULT_SIGNED_CHAR  0
  100.  
  101. /* Define this if the target system supports the function atexit from the
  102.    ANSI C standard.  If this is not defined, and INIT_SECTION_ASM_OP is not
  103.    defined, a default exit function will be provided to support C++.  
  104.    The man page only describes on_exit, but atexit is also there.  */
  105. #define HAVE_ATEXIT 1
  106.  
  107. /* Some systems use __main in a way incompatible with its use in gcc, in these
  108.    cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
  109.    give the same symbol without quotes for an alternative entry point.  You
  110.    must define both, or neither. */
  111. #ifndef NAME__MAIN
  112. #define NAME__MAIN "__gccmain"
  113. #define SYMBOL__MAIN __gccmain
  114. #endif
  115.  
  116. /* size_t is "unsigned int" in RISCiX */
  117. #define SIZE_TYPE "unsigned int"
  118.  
  119. /* ptrdiff_t is "int" in RISCiX */
  120. #define PTRDIFF_TYPE "int"
  121.  
  122. /* Maths operation domain error number, EDOM */
  123. #define TARGET_EDOM 33
  124. #include "arm/arm.h"
  125.  
  126. /* The native RISCiX assembler does not support stabs of any kind; because
  127.    the native assembler is not used by the compiler, Acorn didn't feel it was
  128.    necessary to put them in!  */
  129.  
  130. #ifdef DBX_DEBUGGING_INFO
  131. #undef DBX_DEBUGGING_INFO
  132. #endif
  133.